#pragma once

enum Color
{
	Red,
	Black
};


template<class K,class V>
struct RBTreeNode
{
	RBTreeNode(const pair<K,V> kv)
		:_kv(kv)
		,_left(nullptr)
		,_right(nullptr)
		,_parent(nullptr)
		_col(Red)
	{}

	RBTreeNode* _left;
	RBTreeNode* _right;
	RBTreeNode* _parent;
	pair<K, V> _kv;
	Color _col;


};


template<class K,class V>
class RBTree
{
	typedef RBTreeNode<K,V> Node;
public:
	RBTree()
		:_root(nullptr)
	{}

	bool insert(const pair<K, V> kv)
	{

	}

private:
	Node* _root;
};